package com.thought.wxsession.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;

/**
 * <p>
 *
 * </p>
 *
 * @author zhuqinyue
 * @since 2022-12-25
 */
@Getter
@Setter
@TableName("wx_msg")
@ApiModel(value = "WxMsg对象", description = "")
public class WxMsg implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @ApiModelProperty("企微侧消息唯一ID")
    private String msgid;

    @ApiModelProperty("消息动作，目前有send(发送消息)/recall(撤回消息)/switch(切换企业日志)三种类型。String类型")
    private String action;

    @ApiModelProperty("消息发送方id。同一企业内容为userid，非相同企业为external_userid。消息如果是机器人发出，也为external_userid。String类型")
    private String msgFrom;

    @ApiModelProperty("消息接收方列表，可能是多个，同一个企业内容为userid，非相同企业为external_userid。数组，内容为string类型")
    private String tolist;

    @ApiModelProperty("群聊消息的群id。如果是单聊则为空。String类型")
    private String roomid;

    @ApiModelProperty("消息发送时间")
    private LocalDateTime msgtime;

    @ApiModelProperty("消息类型")
    private String msgtype;

    @ApiModelProperty("解密之后的消息json串")
    private String content;

    @ApiModelProperty("使用publickey_ver指定版本的公钥进行非对称加密后base64加密的内容，需要业务方先base64 decode处理后，再使用指定版本的私钥进行解密，得出内容。String类型")
    private String encryptRandomKey;

    @ApiModelProperty("消息密文。需要业务方使用将encrypt_random_key解密得到的内容，与encrypt_chat_msg，传入sdk接口DecryptData,得到消息明文。String类型")
    private String encryptChatMsg;

    @ApiModelProperty("消息拉取序号 ")
    private Integer seq;

    @ApiModelProperty("拉取消息的sdk 用来解密")
    private Long sdk;

    @ApiModelProperty("拉取状态 0 —>正常拉取并解密    1—>消息解密失败或者其他情况拉取失败")
    private Integer errorCode;

    @ApiModelProperty("拉取消息错误信息")
    private String errorDesc;

    @ApiModelProperty("文件地址")
    private String filePath;

    @ApiModelProperty("文字消息内容")
    private String textMsg;

    @ApiModelProperty("文件名称")
    private String fileName;

    @ApiModelProperty("解析状态 1成功解析 0解析中 2解析错误")
    private Integer parsingStatus;

    @ApiModelProperty("解析错误信息")
    private String parsingDesc;


    private LocalDateTime createTime;

    private LocalDateTime updateTime;
}
